/**
 * 
 */
package com.thor.palmmall.spi.servicebill;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.thor.commons.exception.ThorServiceException;
import com.thor.palmmall.spi.common.SOperateInfo;
import com.thor.palmmall.spi.common.SQueryResult;
import com.thor.palmmall.spi.common.SResponse;
import com.thor.palmmall.spi.common.SUserGroupLoadParam;

/**
 * @author Captain
 *
 * @since 1.0
 */
@Path("/1/servicebill")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface SServiceBillService {

  @POST
  @Path(value = "/create")
  SResponse<String> create(SServiceBill4Create ServiceBill,
      @QueryParam("") SOperateInfo operateInfo);

  @POST
  @Path(value = "/save")
  SResponse<String> save(SServiceBill ServiceBill, @QueryParam("") SOperateInfo operateInfo);

  @POST
  @Path(value = "/{id}")
  SResponse<SServiceBill> get(@PathParam("id") String id, SUserGroupLoadParam param)
      throws ThorServiceException;

  @POST
  @Path(value = "/finish")
  SResponse<String> finish(SServiceBillFinishParam param);
  
  @POST
  @Path(value = "/query")
  SResponse<SQueryResult<SServiceBill>> query(SServiceBillQueryParam param);

  @GET
  @Path(value = "/queryOutgoingState")
  SResponse<String[]> queryOutgoingState();

}
